package reflect;

import reflect.annotations.AutoRunClass;
import reflect.annotations.AutoRunMethod;

/**使用当前类测试反射机制*/
@AutoRunClass
public class Person {
    private String name="张三";
    private int age=20;
    public Person(){}

    public Person(String name) {
        this.name = name;
    }

    public Person(String name, int age){
        this.name=name;
        this.age=age;
    }
   //@AutoRunMethod(value=2,name="张三")
    //有两个参 无默认值，都要写
    public void sayHello(){
        System.out.println(name+":hello!");
    }
    //@AutoRunMethod(2)
    // 恰巧有一个参，参为value 无默认值 可以省略value= 只写2
    public void sayHi(){
        System.out.println(name+":hi!");
    }
    //@AutoRunMethod(2)
    // 恰巧有一个参，参不是value 无默认值 yao 都写 不能省
    public void doSome(){
        System.out.println(name+"做某事");
    }
    //@AutoRunMethod("张三")
    //有两个参，一个为默认值，另一个为value,可以省略value=
    //若写了第一个，无论第二个是否为value  都要写value=
    public void sleep(){
        System.out.println(name+"在睡觉");
    }
    //@AutoRunMethod(name="张三",time=2)
    //@AutoRunMethod(time=2,name="张三")
    //有两个参 ，无默认值 无value 都要写，顺序可以不一样
    public void watchTV(){
        System.out.println(name+"在看电视");
    }

    public void study(){
        System.out.println(name+"在学习");
    }
    @AutoRunMethod(3)
    //只有一个参，无默认值，无value，可以省略value=
    public void playGame(){
        System.out.println(name+"在玩游戏");
    }
    @AutoRunMethod(2)
    public void sing(){
        System.out.println(name+"在唱歌");
    }
    public void say(String info){
        System.out.println(name+":"+info);
    }
    public void say(String info,int count){
        for(int i=0;i<count;i++){
            System.out.println(name+":"+info);
        }
    }
    private void hehe(){
        System.out.println("呵呵");
    }
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
